1. Field of the Invention
The present invention relates to a minimal area implementation of a polyphase interpolation filter and particularly to implementation of a polyphase interpolation filter using symmetry of coefficients for at least one channel of input data.
2. Description of the Related Art
In a Multirate DSP system, upsampling is the process of inserting zero valued samples between original samples for increasing the sampling rate. The process of upsampling induces undesired spectral images in the original signal. Interpolation is a process of upsampling followed by filtering that removes the undesirable spectral images. The concept of an interpolation filter is creating modified samples from the original samples as if the signal has been originally sampled at a higher rate. Interpolation implies inserting zero valued samples between each pair of input samples (zero stuffing), thereafter filtering the result obtained. The process of zero stuffing creates a higher-rate signal having a spectrum same as the original over the original bandwidth, but has images of the original spectrum centered on multiples of the original sampling rate, the images being eliminated by low pass filtering.
Hereafter in the description, mono L-fold Polyphase interpolation FIR filter is referred as 1-L-FIR filter. Stereo L-fold Polyphase interpolation FIR filter is referred as 2-L-FIR filter.
The implementation of an existing polyphase interpolation filter is discussed with the help of the following equations.
The generalized transfer function of a digital filter is given by:
                                          H            ⁡                          (              z              )                                =                                    ∑                              n                =                                  -                  ∞                                                            n                =                ∞                                      ⁢                                                  ⁢                          h              ⁢                                                          ⁢                              (                n                )                            ⁢                                                          ⁢                                                (                  Z                  )                                                  -                  n                                                                    ,                            (        1        )            where h(n) is the impulse response of the filter or the coefficient set and Z−n is delay of n clock cycles. A generalized digital filter can be used as an L-Fold interpolation filter, where L is the interpolation factor for the filter. An existing implementation of a 2-fold polyphase interpolation filter is hereby discussed.
For the polyphase implementation of a filter with a coefficient set h(n), even numbered coefficients and odd numbered coefficients are separated from each other, that result in the following transfer function.
                                          H            ⁡                          (              z              )                                =                                                    ∑                                  n                  =                                      -                    ∞                                                                    n                  =                  ∞                                            ⁢                                                          ⁢                              h                ⁢                                                                  ⁢                                  (                                      2                    ⁢                    n                                    )                                ⁢                                                                  ⁢                                                      (                    Z                    )                                                                              -                      2                                        ⁢                    n                                                                        +                                          z                                  -                  1                                            ×                                                ∑                                      n                    =                                          -                      ∞                                                                            n                    =                    ∞                                                  ⁢                                                                  ⁢                                  h                  ⁢                                                                          ⁢                                      (                                                                  2                        ⁢                        n                                            +                      1                                        )                                    ⁢                                                                          ⁢                                                            (                      Z                      )                                                                                      -                        2                                            ⁢                      n                                                                                                          ,                            (        2        )            where h(2n) are even coefficients, h(2n+1) are odd coefficients and Z−2n is the delay of 2n clock cycles.
The transfer function of an even coefficient bank R0(z) is given in the following equation.
                                                                        R                0                            ⁡                              (                z                )                                      =                                          ∑                                  n                  =                                      -                    ∞                                                                    n                  =                  ∞                                            ⁢                                                          ⁢                              h                ⁢                                                                  ⁢                                  (                                      2                    ⁢                    n                                    )                                ⁢                                                                  ⁢                                                      (                    Z                    )                                                        -                    n                                                                                ,                ⁢                                                      (        3        )            where h(2n) are even coefficients and Z−n is delay of n clock cycles.
Odd coefficient bank transfer function R1(z) is given in Equation (4):
                                                        R              1                        ⁡                          (              z              )                                =                                    ∑                              n                =                                  -                  ∞                                                            n                =                ∞                                      ⁢                                                  ⁢                          h              ⁢                                                          ⁢                              (                                                      2                    ⁢                    n                                    +                  1                                )                            ⁢                                                          ⁢                                                (                  Z                  )                                                  -                  n                                                                    ,                            (        4        )            where h(2n+1) are odd coefficients and Z−n is delay of n clock cycles.
Substituting equation (3) and (4) into equation (2) to obtain equation (5);H(z)=R0(Z)2+z−1R1(Z)2  (5),
Extending the discussion of 2-Fold interpolation filter to a polyphase implementation of an L-fold polyphase interpolation filter would result in transfer function as in equation (6).
                                          H            ⁡                          (              Z              )                                =                                    ∑                              l                =                0                                            L                -                1                                      ⁢                                                  ⁢                                          Z                                  -                                      (                                          L                      -                      1                      -                      l                                        )                                                              ×                                                                    R                                          L                      -                      1                      -                      l                                                        ⁡                                      (                    Z                    )                                                  L                            ⁢                                                          ⁢              where                                      ,                                  ⁢                                            R                              L                -                1                -                l                                      ⁡                          (              Z              )                                =                                    ∑                              n                =                                  -                  ∞                                                            n                =                ∞                                      ⁢                                                            r                                      L                    -                    1                    -                    l                                                  ⁡                                  (                  n                  )                                            ⁢                                                          ⁢                              Z                                  -                  n                                                                                        (        6        )            where rL-1-l(n) is the impulse response of the L−1-lth coefficient bank, where l varies from 0 to L−1. Equation (6) implies that the L fold interpolation filter would involve L coefficient banks. The following discussion is about the existing method to obtain the structure of L fold interpolation filter.
The existing method, to realize the structure of L fold polyphase interpolation filter, is illustrated in FIG. 1. The existing method as shown in FIG. 1 has two parts: Part 1 being an algorithm to obtain the coefficient banks of L-fold polyphase interpolation filter; and Part 2 being a generalized structure to map the results obtained from the algorithm in Part 1.
As per the algorithm coefficient banks are formed by decimating coefficients by interpolation factor (L) as shown in FIG. 2. Let {h(0),h(1),h)(2), . . . h(L−1),h(L),h(L+1) . . . h(mL−2),h(mL−1),h(mL)} be the coefficient set of an L fold interpolation filter, where ‘m’ is any positive number.
The impulse response of the coefficient banks r0(n), r1(n) . . . rL−1(n) is obtained by using the algorithm of FIG. 1 are as follows:CB0=r0(n)={h(0),h(L),h(2L) . . . h(mL)}CB1=r1(n)={h(1),h(L+1) . . . }. . .CBL−1=rL-1(n)={h(L−1,h(2L−1) . . . h(mL−1)},where r0(n), r1(n) . . . rL-1(n) are impulse responses of coefficient banks.
The coefficient banks obtained are mapped onto an existing generalized structure as follows.
An existing generalized structure for an L-fold polyphase interpolation filter with, commutator as shown in FIG. 3, where X(n) is the input and Y(n) is the output and R0(Z), R1(Z), . . . RL-1(Z) are the coefficient banks. The objective of the commutator is to output a coefficient bank from the set of coefficient banks. Extending the polyphase implementation discussion for a general filter to a 4-fold interpolation FIR filter with symmetric coefficients result in symmetric and mirror image coefficient banks.
This fact is further illustrated with an example structure of 1-L-FIR as given below.
For this example let the interpolation factor be ‘4’ and the coefficient set be {10,20,30,40,50,60,70,80,90,80,70,60,50,40,30,20,10}. FIG. 4 shows the graphical execution of the algorithm to find coefficient banks for an example. The four coefficient banks formed by decimating coefficients by interpolation factor 4 are:CB0={h(0),h(4),h(8),h(12),h(16)}CB1={h(1),h(5),h(9),h(13)}CB2={h(2),h(6),h(10),h(14)}CB3={h(3),h(7),h(11),h(15)},where values of h(0) to h(16) for the example are;h(0)=h(16)=10h(1)=h(15)=20h(2)=h(14)=30h(3)=h(13)=40h(4)=h(12)=50h(5)=h(11)=60h(6)=h(10)=70h(7)=h(9)=80h(8)=90substituting the values of h(0) to h(16) in CB0 to CB3 the coefficient banks are;CB0={10,50,90,50,10}CB1={20,60,80,40}CB2={30,70,70,30}CB3={40,80,60,20}
The structure for realizing the polyphase implementation of the example is shown in FIG. 5, wherein the rectangles with Z−1 (11) are unit sample delays, the triangles (12) are multipliers and the circles with ‘+’ sign in them are adders (13). The operation of unit sample delays (11), multipliers (12), and adders (13), are explained later in the document. The plurality of unit sample delays (11), are connected to each other and resulting taps coming out of the unit sample delays (11), are connected to a plurality of multipliers (12). The multipliers receive a plurality of multiplicands from the unit sample delays, and the output of multipliers is connected to plurality of adders (13) connected to form coefficient banks (CB0, CB1, CB2, CB3). The output of the coefficient banks are connected to the commutator 14 to form a polyphase implementation of a FIR filter.